package com.hk.crm.settings.service.impl;

import com.hk.crm.exception.LoginException;
import com.hk.crm.settings.dao.UserDao;
import com.hk.crm.settings.domain.User;
import com.hk.crm.settings.service.UserService;
import com.hk.crm.utils.DateTimeUtil;
import com.hk.crm.utils.SqlSessionUtil;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserServiceImpl implements UserService {
//    与数据的交互 业务层得调用dao层，创建dao层的动态代理
    private UserDao proxydao= SqlSessionUtil.getSqlSession().getMapper(UserDao.class);

    @Override
    public User login(String loginAct, String loginPwd, String ip) throws LoginException {
        Map<String,String> map=new HashMap<>();
        map.put("loginAct",loginAct);
        map.put("loginPwd", loginPwd);
        User user=proxydao.login(map);
        if (user==null){
//            往上抛异常
            throw new LoginException("账号密码错误");
        }
//        如果程序能成功执行到该行 说明账号密码正确
//        需要继续向下验证其他三项信息
        String expireTime=user.getExpireTime();
        String nowTime= DateTimeUtil.getSysTime();
        if (expireTime.compareTo(nowTime)<0){
            throw new LoginException("身份失效，请联系管理员");
        }
//        判断锁定状态
        String lockState=user.getLockState();
        if ("0".equals(lockState)){
            throw new LoginException("账号已被锁定，请联系管理员");
        }
//        判断ip地址
//        String allowIps=user.getAllowIps();
//        if (!allowIps.contains(ip)){
//            throw new LoginException("ip地址受限制，请联系管理员");
//        }
        return user;
    }

    @Override
    public List<User> getUserList() {
        List<User> userList= proxydao.getUserList();
        return userList;
    }


}
